#ifndef MINUTERIE_H
#define MINUTERIE_H

#include <ctime>
#include <climits>

namespace tp3
{

/**
 *
 * Classe timer de la librairie boost quelque peu simplifiée.
 * (à utiliser si vous n'avez pas boost.)
 *
 */

class timer
{
public:
   /**
    * \brief Crée une nouvelle minuterie.
    *
    * \post La fonction elapsed() doit retournée 0 (immédiatiement après l'instanciation).
    */
   timer()
   {
      m_start_time = std::clock();
   }

   /**
    * \brief Remet le compteur à zéro.
    *
    * \post La fonction elapsed() doit retournée 0 (immédiatiement après un appel à restart()).
    */
   void restart()
   {
      m_start_time = std::clock();
   }

   /**
    * \brief Retourne le temps écoulé (en seconde) depuis l'instanciation de l'objet ou depuis
    * \brief le dernier appel à restart().
    */
   double elapsed() const
   {
      return double(std::clock() - m_start_time) / CLOCKS_PER_SEC;
   }

private:
   std::clock_t m_start_time; /*!< Pour conserver le temps depuis l'instanciation ou depuis le dernier appel à restart(). */
};

}

#endif
